<?php
/**
 * autoID公用函数文件
 * 返回ID,当$count>1时返回最大的ID,比如$count=3 返回 100，那么100 99 98 即所要的值
 *
 */
function get_auto_id($key=0, $count=1) {
	global $_autoid_no_persistent;
	if (!is_numeric($key)) {
		die('get_auto_id key invalid, integer required!');
		return false;
	}

	$key=intval($key);
	$count=intval($count);
	if(!($key>=0 && $key<65536 && $count>=1 && $count<65536 && ($key <= 60000))) {
		die('get_auto_id key invalid, 60000>=integer>=1 required!');
		return false;
	}

	$server_master=C("auto_id_slave_server_master");
	/*
	$server_backup=C("auto_id_slave_server_backup");
	$server_backup["parents"]=array($server_master);
	$server_current=C("auto_id_slave_server_current");
	*/
	$server_current_list=C("auto_id_slave_server_current_list");
	$server_list=array();
	foreach($server_current_list as $server_current){
		$server_current["parents"]=array($server_master);
		$server_list[]=$server_current;
	}

	//$server_current["parents"]=array($server_master,$server_backup);
	//$server_list=array($server_current);

	//$id=false;
	//dump($server_list);

	if($_autoid_no_persistent){
		foreach($server_list as $k=>$server){
			$server_list[$k]["persistent"]=false;
		}
	}

	//$id=false;
	//dump($server_list);
	$id=lib_get_auto_id($server_list,$key,$count);
	if($id){
		return $id;
	}

	$_autoid_no_persistent=true;
	foreach($server_list as $k=>$server){
		$server_list[$k]["persistent"]=false;
	}

	for($i=3;$i-->0; ){
		$id=lib_get_auto_id($server_list,$key,$count);
		if($id){
			return $id;
		}
		sleep(5);
	}
	return false;
}

/**
 * 非数据库表PK ID取得唯一int型ID的方法
 *
 * 调用get_auto_id, 取key=1
 */
function get_unique_id() {

	return get_auto_id(1);
}
?>